package plugins.huodong;

import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.events.SetFilterEvent;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.user.UserServiceHelper;
import kd.sdk.plugin.Plugin;

/**
 * 标准单据列表插件
 */
public class CreatHuoDong extends AbstractListPlugin implements Plugin {
    @Override
    public void setFilter(SetFilterEvent e) {
        // 1. 获取当前登录用户的用户名
        String currentUsername = RequestContext.get().getUserName();

        // this.getView().showTipNotification("当前用户: " + currentUsername);

        // 获取入口参数
        String identity = this.getView().getFormShowParameter().getCustomParam("Identity");

        if ("user".equals(identity)) {
            super.setFilter(e); // 如果是user身份，直接使用父类的setFilter方法
            return;
        }

        // 2. 如果当前用户不是"陈旭"（管理员），则查询基础资料dcb4_merchantdata
        if (!currentUsername.equals("陈旭")) {
            String merchantEntity = "dcb4_merchantdata"; // 基础资料实体标识
            String selectFields = "id"; // 只需查询主键
            QFilter usernameFilter = new QFilter("dcb4_manager_name", QCP.equals, currentUsername);
            DynamicObjectCollection merchantList = QueryServiceHelper.query(merchantEntity, selectFields, new QFilter[]{usernameFilter});

            // 3. 提取基础资料ID列表
            Object[] merchantIds = merchantList.stream().map(DynamicObject::getPkValue).toArray();

            // 如果没有匹配的记录，不显示数据
            if (merchantIds.length == 0) {
                // 没有匹配的商户记录，不显示数据
                this.getView().showMessage("当前非商户用户，请联系管理员。");
                QFilter impossibleFilter = new QFilter("1", QCP.equals, 2);
                e.addCustomQFilter(impossibleFilter);
            } if (merchantIds.length > 0) {
                QFilter filter = new QFilter("dcb4_merchant.id", QCP.in, merchantIds);
                e.addCustomQFilter(filter); // 注入自定义条件
            }
        } else {
            // 如果是管理员用户，直接使用父类的setFilter方法
            super.setFilter(e);
        }
    }
}